﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using FinanSoft.BusinessLayer;

namespace FinanSoft.Entities
{
    [DataContract]
    public class ItemStoreRoomInfo
    {
        #region Atributos
        private StoreRoom _storeRoom;
        private Account _cuentaInventario;
        private Account _cuentaCostoVentas;
        private Account _cuentaVentas;
        private Account _cuentaCompras;
        private int _stock;
        private int _comprometido;
        private int _solicitado;
        private double _costoUnitario;
        #endregion

        #region Properties
        [DataMember]
        public StoreRoom StoreRoom
        {
            get
            {
                return _storeRoom;
            }
            set
            {
                _storeRoom = value;
            }
        }

        [DataMember]
        public Account CuentaInventario
        {
            get
            {
                return _cuentaInventario;
            }
            set
            {
                _cuentaInventario = value;
            }
        }
        //
        [DataMember]
        public Account CuentaCostoVentas
        {
            get
            {
                return _cuentaCostoVentas;
            }
            set
            {
                _cuentaCostoVentas = value;
            }
        }
        //
        [DataMember]
        public Account CuentaVentas
        {
            get
            {
                return _cuentaVentas;
            }
            set
            {
                _cuentaVentas = value;
            }
        }
        //
        [DataMember]
        public Account CuentaCompras
        {
            get
            {
                return _cuentaCompras;
            }
            set
            {
                _cuentaCompras = value;
            }
        }
        //
        [DataMember]
        public int Stock
        {
            get
            {
                return _stock;
            }
            set
            {
                _stock = value;
            }
        }
        //
        [DataMember]
        public int Comprometido
        {
            get
            {
                return _comprometido;
            }
            set
            {
                _comprometido = value;
            }
        }
        //
        [DataMember]
        public int Solicitado
        {
            get
            {
                return _solicitado;
            }
            set
            {
                _solicitado = value;
            }
        }
        //
        [DataMember]
        public double CostoUnitario
        {
            get
            {
                return _costoUnitario;
            }
            set
            {
                _costoUnitario = value;
            }
        }

        #endregion

        #region Constructor
        /// <summary>
        /// Contructor del objeto BodegaArticulo que almacena los articulos por bodega para todas las bodegas
        /// </summary>
        /// <param name="idBodega"></param>
        /// <param name="idArticulo"></param>
        /// <param name="idCuentaInventario"></param>
        /// <param name="idCuentaCostoVentas"></param>
        /// <param name="idCuentaVentas"></param>
        /// <param name="idCuentaCompras"></param>
        /// <param name="stock"></param>
        /// <param name="comprometido"></param>
        /// <param name="solicitado"></param>
        /// <param name="costoUnitario"></param>
        public ItemStoreRoomInfo(int idBodega, int idCuentaInventario, int idCuentaCostoVentas, int idCuentaVentas, int idCuentaCompras, int stock, int comprometido, int solicitado, double costoUnitario)
        {
            CatalogManager catMan = CatalogManager.GetInstance();
            _storeRoom = StoreRoomManager.GetInstance().GetStoreRoom(idBodega);
            _cuentaInventario = catMan.GetAccount(idCuentaInventario);
            _cuentaCostoVentas = catMan.GetAccount(idCuentaCostoVentas);
            _cuentaVentas = catMan.GetAccount(idCuentaVentas);
            _cuentaCompras = catMan.GetAccount(idCuentaCompras);
            _stock = stock;
            _comprometido = comprometido;
            _solicitado = solicitado;
            _costoUnitario = costoUnitario;
            
        }

        /// <summary>
        /// Crea un objeto bodega articulo
        /// </summary>
        /// <param name="idBodega"></param>
        /// <param name="idArticulo"></param>
        /// <param name="idCuentaInventario"></param>
        /// <param name="idCuentaCostoVentas"></param>
        /// <param name="idCuentaVentas"></param>
        /// <param name="idCuentaCompras"></param>
        /// <param name="stock"></param>
        /// <param name="comprometido"></param>
        /// <param name="solicitado"></param>
        /// <param name="costoUnitario"></param>
        /// <param name="descripcion"></param>
        /// <param name="idum"> en lugar del strin recibe el id</param>
        /// <param name="comentarios"></param>
        /// <param name="codigo"></param>
        public ItemStoreRoomInfo(int idBodega, int idCuentaInventario, int idCuentaCostoVentas, int idCuentaVentas, int idCuentaCompras)
        {
            CatalogManager catMan = CatalogManager.GetInstance();
            _storeRoom = StoreRoomManager.GetInstance().GetStoreRoom(idBodega);
            _cuentaInventario = catMan.GetAccount(idCuentaInventario);
            _cuentaCostoVentas = catMan.GetAccount(idCuentaCostoVentas);
            _cuentaVentas = catMan.GetAccount(idCuentaVentas);
            _cuentaCompras = catMan.GetAccount(idCuentaCompras);
            _stock = 0;
            _comprometido = 0;
            _solicitado = 0;
            _costoUnitario = 0;
        }
        #endregion

    }
}
